package com.lonely.system.domain.vo.system.user;

import com.lonely.common.enums.UserStatus;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author: 黄志标
 * @date: 2025/6/3 14:01
 * @description: 员工详情响应实体，用于获取指定员工的信息
 */
@Data
public class SysUserDetailVo implements Serializable {

    /**
     * 用户信息
     */
    private UserInfo userInfo;

    /**
     * 角色信息
     */
    private List<RoleInfo> allotRoleList;

    /**
     * 数据权限信息
     */
    private OrganizationInfo allotOrganization;

    /**
     * 员工信息
     */
    @Data
    public static class UserInfo implements Serializable {

        /**
         * 用户ID
         */
        private Long id;

        /**
         * 用户账号
         */
        private String userName;

        /**
         * 手机号码
         */
        private String phone;

        /**
         * 工厂id
         */
        private Long factoryId;

        /**
         * 产线id
         */
        private Long productionLineId;

        /**
         * 职位标签
         */
        private List<String> positionTags;

        /**
         * 生产工种
         */
        private Integer workType;

        /**
         * 账号状态（0正常 1停用）
         *
         * @see UserStatus
         */
        private Integer userStatus;

    }

    /**
     * 员工绑定的角色信息
     */
    @Data
    public static class RoleInfo implements Serializable {
        /**
         * 角色ID
         */
        private Long id;

        /**
         * 角色名称
         */
        private String roleName;

        /**
         * 备注
         */
        private String remark;

        /**
         * 角色归属
         */
        private String attribution;
    }


    /**
     * 数据权限配置
     */
    @Data
    public static class OrganizationInfo implements Serializable {

        /**
         * 是否选中
         */
        private boolean checked;

        /**
         * label
         */
        private String label;

        /**
         * 实际值
         */
        private String value;

        /**
         * 用户分支工厂列表
         */
        private List<BranchFactory> userBranchFactoryList;


    }

    /**
     * 工厂信息
     */
    @Data
    public static class BranchFactory implements Serializable {
        /**
         * 是否选中
         */
        private boolean checked;

        /**
         * label
         */
        private String label;

        /**
         * 实际值
         */
        private String value;

        /**
         * 用户产线分组列表
         */
        private List<ProcessInfo> userProcessList;
    }


    /**
     * 产线分组信息
     */
    @Data
    public static class ProcessInfo implements Serializable {
        /**
         * 是否选中
         */
        private boolean checked;

        /**
         * label
         */
        private String label;

        /**
         * 实际值
         */
        private String value;

        /**
         * 产线列表
         */
        private List<LineInfo> userLineList;
    }


    /**
     * 产线信息
     */
    @Data
    public static class LineInfo implements Serializable {
        /**
         * 是否选中
         */
        private boolean checked;

        /**
         * label
         */
        private String label;

        /**
         * 实际值
         */
        private String value;
    }


}
